﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Collections;
using System.Xml.Serialization;

namespace TP2.Lib
{
    [Serializable]
    public abstract class AvionEnemigo : VehiculoAereo
    {
        #region /* --------- Propiedades -----------*/
        
         private bool _estaHuyendo;
        public bool EstaHuyendo
        {
            get { return this._estaHuyendo; }
            set { this._estaHuyendo = value; }
        }

        #endregion

        public AvionEnemigo() { } /*Contructor vacio, lo utiliza la serialización*/

        public AvionEnemigo(double[] posicion, int[] dimensiones) : base(posicion, dimensiones) { }
        
        public void Huir()
        {
            ((MovimientoLineal)this.Recorrido).VelocidadX = (((MovimientoLineal)this.Recorrido).VelocidadX) * (-1);
            ((MovimientoLineal)this.Recorrido).VelocidadY = (((MovimientoLineal)this.Recorrido).VelocidadY) * (-1);

            this.EstaHuyendo = true;

        }

        public override void Impactar(ElementoJuego impactante)
        {
            impactante.ImpactarConAvionEnemigo();
        }

        public override void ImpactarConArma(Arma impactante)
        {
            //Supongo que estos elementos no se impactan.
        }

        public override bool ImpactarConProyectil(Proyectil impactante)
        {
            //impactante.ImpactarConAvionEnemigo();
            this.ModificarVida(impactante.Danio);

            return (this.EstoyVivo());
        }

        public override void ImpactarConAvionCivil()
        {
            //Supongo que estos elementos no se impactan.
        }

        public override void ImpactarConAvionEnemigo()
        {
            //Supongo que estos elementos no se impactan.
        }

        public override void ImpactarConAvionJugador()
        {
            this.ModificarVida(this.Vida);
        }

        public override void ImpactarConHelicopteroPolicia()
        {
            //Supongo que estos elementos no se impactan.
        }

        public override void ImpactarConTanqueEnergia(TanqueEnergia impactante)
        {
            //Supongo que estos elementos no se impactan.
        }

        public override void AgregateALista(List<ElementoJuego> lista1, List<ElementoJuego> lista2)
        {
            lista2.Add(this);
        }        
    }
}
